perm filename SYM.FAI[1,BGB] blob sn#001241 filedate 1972-09-07 generic text, type T, neo UTF8
00100	TITLE SYMBOL TABLE SUBROUTINES  -  SEPTEMBER 1972
00200	
00300	;BALANCED TREE SYMBOL TABLE NODE.
00400	
00500		;WORD0: LEFT,,RIGHT	;TREE LINKS.
00600	TILT←1	;WORD1: -1 LEFT HEAVY, 0 BALANCED, +1 RIGHT HEAVY.
00700	TAG←2	;WORD2: NAME-TAG
00800	VALUE←3 ;WORD3: VALUE OF THIS NAME.
00900	
01000	;ACCESS(KEY,ROOT) returns PTR≠0 to node whoes TAGS equals KEY,
01100	;ACCESS(KEY,ROOT) returns PTR=0 when no such node is found.
01200	SUBR ACCESS
01300	BEGIN
01400		PTR←1 ↔ LEV←2
01500		SKIPN PTR,ARG1↔RET2 ;FETCH ROOT, EXIT IF EMPTY.
01600		LIMZ LEV,PATH
01700	
01800	L1:	LAC ARG2 ;KEY
01900		SUB TAG(PTR)	;COMPARE GIVEN KEY WITH A NODE TAG.
02000		JUMPE POPJ2.	;DIRECT HIT EQUALS.
02100		JUMPL [
02200		WIP PTR↔PUSH LEV,PTR
02250		CAR PTR,(PTR)↔JUMPN PTR,L1↔POPJ2]	;TAKE LEFT SUBTREE.
02300		TLO PTR,1↔PUSH LEV,PTR
02400		CDR PTR,(PTR)↔JUMPN PTR,L1↔POPJ2	;TAKE RIGHT SUBTREE.
02500		LIT
02600	BEND